參考資料
Alex老師教學
pjchender筆記
JS30-Day17-Sort Without Articles
文字排序。
遇到開頭是the , a , an 就忽略,改用後方內容排序。
題目預設
const bands = [
'The Plot in You',
'The Devil Wears Prada',
'Pierce the Veil',
'Norma Jean',
'The Bled',
'Say Anything',
'The Midway State',
'We Came as Romans',
'Counterparts',
'Oh, Sleeper',
'A Skylit Drive',
'Anywhere But Here',
'An Old Dog',
];
bands.sort();//陣列排序
抓取節點
const text = document.getElementById('bands');//ul
先看一下畫面和呈現的資料
text.innerHTML = bands.join('');
加上<li>
放入<ul>
內
text.innerHTML = bands
.map(item => {
return `<li>${item}</li>`;
})
.join('');
加上正則
// 正則
let filterItem = item => {
// 開頭是a ,the ,an,都替換成空字串
return item.replace(/^(a |the |an )/i, '').trim();
// trim()刪除字串前後的空白
};
//陣列排序
bands.sort((a, b) => {
return filterItem(a) > filterItem(b) ? 1 : -1;
});
// sort()是操作原陣列
// 使用新陣列的寫法
let sortBands = [...bands].sort((a, b) => {
return filterItem(a) > filterItem(b) ? 1 : -1;
});
console.log(bands === sortBands); //false